package com.easyapi.common.vo.api;

import com.easyapi.common.param.api.InputParam;
import com.easyapi.common.param.api.OutputParam;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @author: javadadi
 * @Time: 10:49
 * @ClassName: ApiInfoVo
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ApiInfoVo implements Serializable {
    private static final long serialVersionUID = 2878760461922365691L;
    /**
     * id
     */
    private Long id;
    /**
     * 创建时间
     */
    private Date createAt;

    /**
     * 更新时间
     */
    private Date updateAt;

    /**
     * 创建人
     */
    private Long createBy;

    /**
     * 创建人名称
     */
    private String createUsername;

    /**
     * 更新人
     */
    private Long updateBy;
    /**
     * 更新人名称
     */
    private String updateUsername;

    /**
     * api中文名称
     */
    private String apiNameCn;

    /**
     * api英文名称
     */
    private String apiName;

    /**
     * 描述
     */
    private String apiDesc;

    /**
     * 项目id
     */
    private Long projectId;
    /**
     * 项目名称
     */
    private String projectName;

    /**
     * 数据源id
     */
    private Long datasourceId;

    /**
     * 数据源名称
     */
    private String datasourceName;

    /**
     * 数据库名
     */
    private String databasesName;

    /**
     * 目标表名
     */
    private String tableName;

    /**
     * 访问次数限制
     */
    private Integer reqLimit;

    /**
     * api类型(0-生成,1-注册api)
     */
    private String apiType;

    /**
     * 状态: 0:正常/1:下线/2-禁用
     */
    private String apiStatus;

    /**
     * 输入参数
     */
    private List<InputParam> inputParams;

    /**
     * 输出参数
     */
    private List<OutputParam> outputParams;

    /**
     * 生成api请求类型: 0:GET/1:POST
     */
    private String reqType;
    /**
     * 请求路径
     */
    private String apiPath;

    /**
     * 参数配置模式：0-向导模式，1-sql模式
     */
    private String paramCfgType;

    /**
     * 是否分页：0-不分页，1-分页
     */
    private String allowPaging;

    /**
     * 分页大小
     */
    private Integer respPageSize;

    /**
     * 自定义sql
     */
    private String configSql;

    /**
     * 返回json示例
     */
    private String respJson;

    /**
     * 数据源类型0-mysql
     */
    private String dataSrcType;

    /**
     * 注册API的原始api host
     */
    private String originalHost;

    /**
     * 注册api的原始api path
     */
    private String originalPath;

    /**
     * 注册api的原始api port(socket协议)
     */
    private Integer originalPort;

    /**
     * 注册api原始请求方式。(枚举GET,POST,PUT)
     */
    private String originalMethod;

    /**
     * 注册api的错误码列表
     */
    private String errorCodeListJson;

    /**
     * 注册api的错误返回示例
     */
    private String errorRespJson;

    /**
     * 注册api put、post请求body示例
     */
    private String bodyDescJson;

    /**
     * api token
     */
    private String apiToken;

    /**
     * api查询超时时间
     */
    private Integer queryTimeOut;

    /**
     * da_api_test的api状态: 0:未提交/1:已提交
     */

    private String testStatus;

    /**
     * 是否缓存
     */
    private String isCache;

    /**
     * 缓存失效周期，1-分，2-时，3-天，4-周，5-月
     */
    private Integer cacheExpiryPeriod;

    /**
     * 缓存失效时间的cron表达式
     */
    private String cacheExpiryDateCron;

    /**
     * 服务编排执行流程图
     */
    private String executionFlowChart;

    /**
     * 是否忽略语法校验
     */
    private String isIgnoreSyntaxCheck;

    /**
     * 服务编排执行流程
     */
    private String orchestrationFlow;
}
